package com.kj.tms.pri.system.menu.service;


import com.kj.tms.common.bean.dto.Pager;
import com.kj.tms.common.bean.dto.ReturnData;
import com.kj.tms.common.bean.dto.TreeData;
import com.kj.tms.pri.system.menu.dto.DictDto;

import java.util.List;
import java.util.Map;

/**
 * <p>项目名称：system<p>
 * <p>类名称：DictService<p>
 * <p>类描述：字典表业务类<p>
 *
 * @author 创建人：yangruidong
 * @author 创建时间： 2017年10月18日 9:41
 * @author 修改人：yangruidong
 * @author 修改时间：2017年10月18日 9:41
 * @author 修改备注：
 * @version: 2017年10月18日
 */
public interface DictService {
    /**
     * 树状显示
     *
     * @param dto
     * @return
     */
    ReturnData getTree(DictDto dto);

    /**
     * @param dictDto
     * @return ReturnData
     * @throws
     * @method [save]
     * @description [添加]
     * @author 王国庆
     * @version 1.0
     * @date 2017年11月09日 15:22
     */
    ReturnData save(DictDto dictDto);

    /**
     * 修改数据 注意修改上级数据下级数据一起修改
     *
     * @param dto
     */
    ReturnData updateData(DictDto dto);

    /**
     * 删除数据 注意删除上级数据下级数据一起删除
     *
     * @param dto
     */
    ReturnData deleteData(DictDto dto);

    /**
     * @param dto
     * @return List<DictDto>
     * @throws
     * @method [queryByList]
     * @description [条件查询全部信息]
     * @author 王国庆
     * @version 1.0
     * @date 2017年11月09日 14:26
     */
    List<DictDto> listByDictDto(DictDto dto);

    /**
     * @param dictDto
     * @return DictDto对象
     * @throws
     * @method [getByCondition]
     * @description [查询返回单个dto]
     * @author 王国庆
     * @version 1.0
     * @date 2017年11月09日 15:19
     */
    DictDto getByCondition(DictDto dictDto);


    /**
     * @param dictType
     * @return List<DictDto>
     * @throws
     * @method queryByDictType
     * @description 根据类型获取字典list
     * @author 董世栋
     * @version 1.0
     * @date
     */
    List<DictDto> listByDictType(String dictType);

    /**
     * @param regType,incomeScale,taxpayerQualification,vatLimit
     * @return Map
     * @throws
     * @method queryTaxPayerByDictType
     * @description 根据类型获取字典Map（纳税主体使用）
     * @author 董世栋
     * @version 1.0
     * @date
     */
    Map<String, Object> listByDictTypeS(String regType,
                                        String incomeScale,
                                        String taxpayerQualification,
                                        String vatLimit);

    /**
     * @param
     * @return
     * @throws
     * @method [listByConditionMap]
     * @description [根据申报税种查询申报周期]
     * @author [yangruidong]
     * @version 1.0
     * @date
     */
    List<DictDto> listByConditionMap(Map map);

    /**
     * @param dictType 字典类型
     * @return
     * @throws
     * @method [listTreeDataByDictType]
     * @description [根据类型查询字典树]
     * @author 王国庆
     * @version 1.0
     * @date 2018年03月23日 14:34
     */
    List<TreeData> listTreeDataByDictType(String dictType);

    /**
     * @param model sd
     * @return Pager
     * @throws
     * @method queryByPage
     * @description 添加数据
     * @author 董世栋
     * @version 1.0
     * @date
     */
    Pager queryByPage(DictDto model);

    DictDto queryTdPeriod(Map map);

    List<DictDto> listTdPeriod(Map map);

    List<DictDto> listByTaxCode(String taxCode, String tdperdCode);

    List<DictDto> listByCondition(DictDto dto);

    List<DictDto> queryByList(DictDto dto);

    List<DictDto> listByTaxDentufy(Map map) throws Exception;
}
